package com.zhuzg.common.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

@Component
public class DataSourceManager {

    @Autowired
    private DynamicDataSourceProperties dynamicDataSourceProperties; // 获取默认的数据源配置信息

    // 管理所有的数据源
    private final Map<String, DataSource> dataSources = new HashMap<>();


    @PostConstruct  // 在DataSourceManager 被实例化放入到容器之后 执行的方法
    public void init() {
        // 根据配置创建数据源并加入管理器
        DataSource defaultDataSource = DataSourceBuilder.create()
                .url(dynamicDataSourceProperties.getUrl())
                .username(dynamicDataSourceProperties.getUsername())
                .password(dynamicDataSourceProperties.getPassword())
                .build();
        dataSources.put("default", defaultDataSource);

    }

    // 添加数据源
    public void addDataSource(String tenantId, DataSource dataSource) {

        dataSources.put(tenantId, dataSource);
    }

    // 获取数据源
    public DataSource getDataSource(String tenantId) {
        return dataSources.get(tenantId);
    }

    /**
     * 获取所有的数据源
     * @return
     */
    public Map<?,?> getAllDataSources() {
        return dataSources;
    }
}
